package com.wenyl.interview.redis.controller;

import com.wenyl.interview.redis.service.IUserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author Swimming Dragon
 * @description: TODO
 * @date 2024年09月25日 16:43
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @Resource
    private IUserService userService;

    /**
     * 根据ID获取缓存中的用户，用于测试缓存击穿
     * @param userId 用户IO
     * @return 用户信息
     */
    @GetMapping("/getCacheDataById/{userId}")
    public String getCacheDataById(@PathVariable(value = "userId") String userId){
        return userService.getCacheDataById(userId);
    }

    /**
     * 根据ID获取的用户，用于测试缓存穿透
     * @param userId 用户IO
     * @return 用户信息
     */
    @GetMapping("/getById/{userId}")
    public String getById(@PathVariable(value = "userId") String userId){
        return userService.getById(userId);
    }

    /**
     * 根据ID获取的用户，设置null值，用于测试缓存穿透
     * @param userId 用户IO
     * @return 用户信息
     */
    @GetMapping("/getByIdv2/{userId}")
    public String getByIdv2(@PathVariable(value = "userId") String userId){
        return userService.getByIdv2(userId);
    }

    /**
     * 根据ID获取的用户，设置null值，用于测试布隆过滤器
     * @param userId 用户IO
     * @return 用户信息
     */
    @GetMapping("/getByIdv3/{userId}")
    public String getByIdv3(@PathVariable(value = "userId") String userId){
        return userService.getByIdv3(userId);
    }


}
